// 1. 引入 mysql 模块
let mysql = require("mysql");
//2. 创建一个连接池
let pool = mysql.createPool({
    connectionLimit: 20,
    host: "localhost",
    port: 3306,
    user: "root",
    password: "root",
    database: "myshop"
})
/* 3. 定义一个数据库查询的方法 */
/* 
    @sql 查询的语句
    @values 查询语句中的值
    @callback 查询成功回调函数
*/
function query(sql, values, callback) {
    console.log("开始查询:", sql, values);
    pool.getConnection(function (err, connection) {
        if (err) {
            console.log("数据库连接出错了...");
            throw err
        };
        connection.query(sql, values, function (err, results, fields) {
            callback(err, results, fields);
            // 释放连接
            connection.release();
        })
    })
}
// 使用promise进行封装
function queryWithPromise(sql, values) {
    console.log("开始查询:", sql, values);
    return new Promise((resolve, reject) => {
        pool.getConnection(function (err, connection) {
            if (err) {
                console.log("数据库连接出错了...");
                throw err
            };
            connection.query(sql, values, function (err, results, fields) {
                resolve({err, results, fields});
                // 释放连接
                connection.release();
            })
        })
    })
}

/* 根据 cat_id 返回菜单的数据 */
function query_cat(cat_id) {
    let sql = "select * from menu where cat_id = ?";
    return new Promise(function (resolve, reject) {
        query(sql, [cat_id], function (err, results, fileds) {
            resolve(results);
        })
    })
}
exports.query = query;
exports.queryWithPromise = queryWithPromise;
exports.query_cat = query_cat;
